#!/bin/bash
 
set -e
 
# 检查是否提供了输入文件路径
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 input_file_path"
    exit 1
fi
 
INPUT_FILE="$1"
 
# 检查输入文件是否存在
if [ ! -f "$INPUT_FILE" ]; then
    echo "Error: Input file does not exist."
    exit 1
fi
 
# 获取输入文件的目录和文件名
INPUT_DIR=$(dirname "$INPUT_FILE")
INPUT_BASENAME=$(basename "$INPUT_FILE")
 
 
# 创建输出文件名
OUTPUT_FILE="$INPUT_DIR/fixed_$INPUT_BASENAME"
 
# 处理SQL转储并替换 ROLLBACK 为 COMMIT
sqlite3 "$INPUT_FILE" .dump | sed 's/ROLLBACK/COMMIT/g' > dump.sql
 
# 输入文件改名备份，避免影响修复
FILE_NEW_NAME="$INPUT_DIR/${INPUT_BASENAME}.bak"
mv "$INPUT_FILE" "$FILE_NEW_NAME"
echo "backup file: $FILE_NEW_NAME"
 
# 将修改后的 SQL 导入新的数据库文件
sqlite3 "$OUTPUT_FILE" < dump.sql
 
# 删除中间文件
rm dump.sql
 
echo "Processed file saved as: $OUTPUT_FILE"
 
ros2 bag reindex  $INPUT_DIR